import axios, { AxiosError } from 'axios'
import Message from '@/components/message'
import useStore from '@/store'
export const baseURL = 'https://apipc-xiaotuxian-front.itheima.net/'
const request = axios.create({
    // 备用接口地址
    // baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net/',
    baseURL,
    timeout: 5000,
})

// 添加请求拦截器
request.interceptors.request.use(
    function (config) {
        // 统一携带token
        const { user } = useStore()
        if (user.profile.token) {
            config.headers!.Authorization = `Bearer ${user.profile.token}`
        }
        // 在发送请求之前做些什么
        return config
    },
    function (error) {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

// 添加响应拦截器
request.interceptors.response.use(
    function (response) {
        return response
    },
    function (error: AxiosError<{ message: string; code: string }>) {
        // 泛型表示 error.response.data 的类型
        if (!error.response) {
            Message.error('网络异常，请稍后重置')
        } else {
            // 这里统一配置提示后，真正发请求的 catch 那儿就不必再写提示了
            // 除非有特殊的情况，当 catch 那儿也有 Message.error 的时候会覆盖这儿的
            Message.error(error.response.data.message)
        }
        return Promise.reject(error)
    }
)

export default request